package com.glela.statistics.service;
import java.util.List;
import java.util.Map;

import com.glela.platform.model.User;
import com.glela.statistics.model.OrderQueryTotal;
import com.glela.statistics.model.TalentStudent;
import com.glela.statistics.model.request.StoreCenterRequest;
import com.glela.statistics.model.response.ResponseWallet;
import com.glela.statistics.model.response.RevenueResponse;
import com.glela.statistics.model.response.SalesRanking;
import com.glela.statistics.model.response.StatisticsResponse;
import com.glela.statistics.model.response.StoreCenterOrderResponse;
import com.glela.statistics.model.response.TalentOrder;
import com.glela.statistics.model.response.ThisMonthAchievement;

/**
 * 统计相关
 * 
 * @author 卫耀华
 *
 */
public interface StatisticsService {

	/**
	 * 获取店铺7天30天90天统计（校妆APP3.5期需求）
	 * 
	 * @author 卫耀华
	 * @param userId
	 * @param statisticsType
	 * @param dayNumType
	 * @return
	 */
	public StatisticsResponse getTalentStoreStatistics(Long userId, int statisticsType, int dayNumType);

	/**
	 * B区店铺本月业绩（校妆APP3.5期需求）
	 * 
	 * @author 卫耀华
	 * @param userId
	 * @return
	 */
	public ThisMonthAchievement getThisMonthAchievement(Long userId);

	/**
	 * 本月业绩排名榜（校妆APP3.5期需求）
	 * 
	 * @author 卫耀华
	 * @param selfSupport
	 * @return
	 */
	public List<SalesRanking> getThisMonthSalesRanking(int selfSupport);
	
	/**
	 * 订单实体
	 * @param userId
	 * @param type
	 * @param startIndex
	 * @param pageSize
	 * @return
	 */
	public List<TalentOrder> getTeacherOrderEntity(long userId, int type, int startIndex, int pageSize);

	/**
	 * 获取所有推客的信息
	 * @param userId
	 * @param startIndex
	 * @param pageSize
	 * @return
	 */
	public List<TalentStudent> getTeacherStudentEntity(Long userId, int startIndex, Integer pageSize);
	
	/*以下是V4.25内容*/
	/**
	 * 
	 * @param persionId
	 * @return
	 */
	public Map<String,Object> selectOrderInfoIds(String persionId, StoreCenterRequest selectCondition, User user);
	
	/**
	 * 获取订单信息
	 * @param userId
	 * @param stuId
	 * @return
	 */
	public StoreCenterOrderResponse selectOrderDetailByOrderInfoIds(StoreCenterRequest selectCondition);
	
	/**
	 * 店铺中心我的钱包查询
	 * @param selectCondition
	 * @return
	 */
	public ResponseWallet selectMyWallet(StoreCenterRequest selectCondition);
	
	/**
	 * 店主通讯录
	 * @param userId
	 * @param orderBy
	 * @return
	 */
	public List<TalentStudent> selectStoreLink(long userId, int orderBy);
	
	/**
	 * 店铺查询
	 * @param selectCondition
	 * @return
	 */
	public List<TalentStudent> selectStoreCenterStudents(StoreCenterRequest selectCondition);	
	
	/**
	 * 营收明细查询
	 * @param selectCondition
	 * @return
	 */
	public RevenueResponse selectRevenueDetails(StoreCenterRequest selectCondition);

	/**
	 * 店主通讯录数量
	 * @param userId
	 * @return
	 */
	Long selectStoreNumber(long userId);

	/**
	 * 查询通过店主购买开店单的用户
	 * @param userId
	 * @param orderBy
	 * @return
	 */
	public List<TalentStudent> queryUnderStudent(Long userId, int orderBy);

	/**
	 * 查询通过店主购买开店单的用户数量
	 * @param userId
	 * @return
	 */
	Long selectUnderStoreNumber(long userId);

	StoreCenterOrderResponse selectOrderDetailByOrderInfoIdsNew(StoreCenterRequest selectCondition);

	OrderQueryTotal selectOrderTotal(StoreCenterRequest selectCondition);
}
